package com.saceem.beans;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import com.saceem.beans.keys.ImagenesPK;

@Entity
@NamedQueries({
		@NamedQuery(name = "findImageLikeName", query = "SELECT i FROM Imagenes i WHERE i.nombre LIKE :nombre AND i.empresa =:empresa "),
		@NamedQuery(name = "findAllImages", query = "SELECT i FROM Imagenes i"),
		@NamedQuery(name = "findImageByName", query = "SELECT i FROM Imagenes i WHERE i.nombre =:nom AND i.empresa=:emp") })
public class Imagenes implements Serializable {

	private static final long serialVersionUID = 2068835625053351441L;

	// @Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ImgId")
	private int id;

	// @Id
	@Column(name = "Nombre", nullable = false, unique = true, insertable = false, updatable = false)
	private String nombre;

	// @Id
	@Column(name = "Empresa", nullable = false, insertable = false, updatable = false)
	private String empresa;

	@Column(name = "Fecha")
	private Date fecha;

	@Column(name = "codigo", nullable = false, unique = true)
	private long codigo;

	@Column(name = "Imagen")
	@Lob
	private byte[] datos64;

	@EmbeddedId
	private ImagenesPK pKey;

	public Imagenes() {
		super();
	}

	public Imagenes(String nombre, String empresa) {
		super();
		this.nombre = nombre;
		this.empresa = empresa;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public String getEmpresa() {
		return empresa;
	}

	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}

	public long getCodigo() {
		return codigo;
	}

	public void setCodigo(long codigo) {
		this.codigo = codigo;
	}

	public byte[] getDatos64() {
		return datos64;
	}

	public void setDatos64(byte[] datos64) {
		this.datos64 = datos64;
	}

	public ImagenesPK getpKey() {
		return pKey;
	}

	public void setpKey(ImagenesPK pKey) {
		this.pKey = pKey;
	}

	@Override
	public boolean equals(Object object) {
		if (!(object instanceof Imagenes)) {
			return false;
		}

		Imagenes other = (Imagenes) object;
		if ((this.nombre == null && other.nombre != null)// ) {
				|| (this.pKey != null && !this.pKey.equals(other.pKey))) {
			return false;
		}
		return true;
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		// return super.hashCode();
		return (int) empresa.hashCode() + nombre.hashCode();
	}

	@Override
	public String toString() {
		return getNombre();
	}

}
